home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / pctj8509.arc / RAPIDSCR.PAS < prev    next >
Pascal/Delphi Source File  |  1986-09-13  |  3KB  |  80 lines

  1. {$C-,U-}
  2. program RapidScreen;
  3.  
  4. TYPE StuffInHeap = ^PutInHeap;           {Pointer to screens}
  5.      PutInHeap = Record                  {Record of images}
  6.                    ScreenImage : Array[1..4096 ] of Char;
  7.                  End;
  8. VAR Ch : Char;
  9.     ColorPage : Array[ 1..4096 ] of Char Absolute $B800 : $0000;
  10.     {This program uses the color screen location.  Change the
  11.     above value to $B000 : $0000 for the monochrome screen.}
  12.     Screen: Array[ 0..3] of StuffInHeap;
  13.     J : Integer;
  14.  
  15. Procedure WaitForKey;
  16. BEGIN
  17.   REPEAT Read (Kbd,Ch) UNTIL Not KeyPressed;
  18. END;
  19.  
  20. Procedure Message;  {Asks for keypress for next screen or quit}
  21. BEGIN
  22.   GoToXY(10, 25);
  23.   Write
  24.   ('Press Enter to stop; any other key steps through screens.');
  25.   WaitForKey;
  26. END;
  27.  
  28. BEGIN {main program}
  29. TextColor(0); TextBackGround(7);
  30. ClrScr;
  31. Write('Screen 0 contains only this line.'); {Write screen 0}
  32. New(Screen[0]);                  {Allocate screen in heapspace}
  33. Move(ColorPage, Screen[0]^.ScreenImage, 4096);  {Store screen }
  34. TextColor(4); TextBackGround(2);      {Attributes for screen 1}
  35. For J := 4 to 15 Do
  36.   BEGIN
  37.     GoToXY(4, J);                              {Write screen 1}
  38.     Write(Chr(186),'Screen 1 is this material.',Chr(186));
  39.   END;
  40. New(Screen[1]);                       {Allocate another screen}
  41. Move(ColorPage, Screen[1]^.ScreenImage, 4096);  {Store screen }
  42. Textcolor(12); TextBackGround(4);
  43. For J := 12 to 22 Do
  44.   BEGIN
  45.     GoToXY(18, J);
  46.     Write
  47.     (Chr(186),'We add this to get screen number 2.',Chr(186));
  48.   END;
  49. New(Screen[2]);
  50. Move(ColorPage, Screen[2]^.ScreenImage, 4096);
  51. TextColor(14); TextBackGround(0);
  52. For J := 15 to 20 Do
  53.   BEGIN
  54.     GoToXY(32, J);
  55.     Write(Chr(186),'And now all of this is screen 3.',Chr(186));
  56.   END;
  57. New(Screen[3]);
  58. {Here we bring screen 3 in from heap:}
  59. Move(ColorPage, Screen[3]^.ScreenImage, 4096);
  60. REPEAT
  61.   Message;            {User presses any key to get next screen}
  62.   If Ch <> ^M Then
  63.     BEGIN             {Bring screen 0 from heap: }
  64.       Move(Screen[0]^.ScreenImage,ColorPage,4096);
  65.       Message;
  66.     END;
  67.   If Ch <> ^M Then
  68.     BEGIN             {Now bring screen 1 from heap: }
  69.       Move(Screen[1]^.ScreenImage, ColorPage, 4096);
  70.       Message;
  71.     END;
  72.   If Ch <> ^M Then
  73.     BEGIN             {Now bring screen 2 from heap: }
  74.       Move(Screen[2]^.ScreenImage, ColorPage, 4096);
  75.       Message;
  76.     END;
  77.   If Ch <> ^M Then    {Now bring screen 3 from heap: }
  78.     Move(Screen[3]^.ScreenImage, ColorPage, 4096);
  79. UNTIL Ch = ^M; ClrScr;
  80. END.